package com.zengzhi.mydesignmode.strategymode;

/**
 * @author xiejiawei
 * @Date 2021-08-14
 * @Time 16:23
 * 鸭子超级类
 */
public abstract class Duck {


    /**
     * 定义飞的行为由子类去实例化
     */
    FlyBehavior flyBehavior;

    /**
     * 定义叫的行为由子类去实例化
     */
    QuackBehavior quackBehavior;

    public void setFlyBehavior(FlyBehavior fb) {
        flyBehavior = fb;
    }

    public void setQuackBehavior(QuackBehavior qb) {
        quackBehavior = qb;
    }
    /**
     * 显示行为的方法
     */
    abstract void disPlay();

    /**
     * 执行飞
     */
    public void performFly() {
        flyBehavior.fly();
    }

    /**
     * 执行叫
     */
    public void performQuack() {
        quackBehavior.quack();
    }
    /**
     * 游泳：所有鸭子都会游泳
     */
    void swim(){
        System.out.println("all duck can swim");
    };

}
